package ssm.integration.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.*;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;

/**
 * description: 控制层的配置类-01
 * TODO：用于SpringMVC组件配置
 *
 * 1. @Configuration 声明配置类
 * 2. @EnableWebMvc 添加 handlerMapping、handlerAdapter，添加 JSON解析器
 * 3. @ComponentScan("") 类路径扫描，将 Controller、ExceptionHandler添加到IOC容器
 * 4. 实现SpringMVC组件声明标准化接口 `WebMvcConfigurer` 简化SpringMVC组件配置
 * 5. 重写方法 `configureDefaultServletHandling` 用于生成默认 Handler 做静态资源响应
 * 6. 重写方法 `configureViewResolvers` 配置视图解析处理器，用于混合开发模式匹配前端页面
 * 7. 重写方法 `addInterceptors` 添加拦截路径
 */

@Configuration
@EnableWebMvc
@ComponentScan({"ssm.integration.controller", "ssm.integration.exceptionhandler"})
public class WebMvcJavaConfig implements WebMvcConfigurer {

    // 静态资源响应
    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }

    // 视图解析处理器，指定匹配路径
    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        registry.jsp("/WEB-INF/views/","jsp");
    }

    // 拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
       // registry.addInterceptor(new xx()).addPathPatterns().excludePathPatterns()
    }
}
